package com.ego.service.impl;

import com.ego.commons.pojo.EasyUIDatagrid;
import com.ego.commons.pojo.EgoResult;
import com.ego.commons.utils.IDUtils;
import com.ego.dubbo.service.TbItemCatDubboService;
import com.ego.dubbo.service.TbItemParamDubboService;
import com.ego.pojo.TbItemParam;
import com.ego.pojo.TbItemParamChild;
import com.ego.service.TbItemParamService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
public class TbItemParamServiceImpl implements TbItemParamService {

    @Reference
    private TbItemParamDubboService tbItemParamDubboService;
    @Reference
    private TbItemCatDubboService tbItemCatDubboService;

    @Override
    public EasyUIDatagrid showItemParam(int page, int rows) {
        //分页查询数据
        List<TbItemParam> list = tbItemParamDubboService.selectByPage(page, rows);

        //把查询到的数据装到 新写的实体类里面
        List<TbItemParamChild> listChild=new ArrayList<>();
        for (TbItemParam param : list) {
            TbItemParamChild child = new TbItemParamChild();
            //把五个数据放入新实体类
           /* child.setId(param.getId());
            child.setCreated(param.getCreated());
            child.setUpdated(param.getUpdated());
            child.setParamData(param.getParamData());
            child.setItemCatId(param.getItemCatId());*/

           //使用Spring自带的工具类 可以吧相同名字的属性 从源对象 拷贝到新对象里  代替上面的一堆代码
            BeanUtils.copyProperties(param,child);
            //从参数表里获得id  再从目录表里查询名字
            child.setItemCatName(tbItemCatDubboService.selectById(param.getItemCatId()).getName());
            listChild.add(child);
        }

        long total = tbItemParamDubboService.selectCount();
        return new EasyUIDatagrid(listChild,total);
    }

    /**
     * 根据目录id 查询规格参数
     * @param catId
     * @return
     */
    @Override
    public EgoResult showItemParamByCatId(long catId) {
        TbItemParam tbItemParam = tbItemParamDubboService.selectByCatId(catId);

        if (tbItemParam!=null){
            return EgoResult.ok(tbItemParam);
        }
        return EgoResult.error("没有查到数据");
    }

    @Override
    public EgoResult insert(TbItemParam tbItemParam) {
        tbItemParam.setId(IDUtils.genItemId());
        Date date = new Date();
        tbItemParam.setCreated(date);
        tbItemParam.setUpdated(date);
        int insert = tbItemParamDubboService.insert(tbItemParam);
        if (insert>0){
            return EgoResult.ok();
        }
        return EgoResult.error("新增失败");
    }

    /**
     * 批量删除
     * @param ids
     * @return
     */
    @Override
    public EgoResult delete(long[] ids) {
        int delete = tbItemParamDubboService.delete(ids);
        if (delete==1){
            return EgoResult.ok();
        }
        return EgoResult.error("删除失败哦");
    }
}
